/**
 * @file: Jugador.cpp
 * @author: Edwin Marcelo Guzman Buezo
 * @date: MAY-18-2009
 * @desc: Este archivo contiene la clase Jugador
 */
#include<vector>
#include<string>
#include "Jugador.h"
#include "Constantes.h"
using namespace std;

Jugador::Jugador(string nombre){
    _nombre = nombre;
    }
        
Jugador::Jugador(){}

//solo retorna error ya que esta funcion se la cargara en JugadorReal y JugadorVirtual.

JUGADA Jugador::jugar(){
    return ERROR;
    }

//false = no puede pasar puede retirarse, true = paso.
bool Jugador::pasar(int apuestaActual,int apuestaDeEsteJugador){
    if(apuestaDeEsteJugador < apuestaActual){
        cout<<_nombre<<"!! No aposto lo minimo !!"<<endl;
        return false;
        }
    else{
        cout<<_nombre<<": Paso"<<endl;
        return true;
        }
    }

void Jugador::retirarse(){
    cout<<_nombre<<": Me retiro"<<endl;
    }

//0=RETIRARSE, 1=PASAR, 2=APOSTAR, 3=ALLIN, 4=ERROR.
int Jugador::apostar(int& apuestaActual,int& apuestaDeEsteJugador,int apuesta){
    int total = apuesta + apuestaDeEsteJugador,
        minimo = apuestaActual - apuestaDeEsteJugador;
    if(_fichas < apuesta){
        cout<<_nombre<<": No tiene tantas fichas"<<endl;
        return ERROR;
        }
    if(_fichas == apuesta){
        cout<<_nombre<<": ALL IN"<<endl;
        _fichas = 0;
        apuestaDeEsteJugador = total;
        if(apuestaActual < apuestaDeEsteJugador){
            apuestaActual = apuestaDeEsteJugador;
            }
        return ALLIN;
        }
    else{
        if(apuesta < minimo){
            cout<<_nombre<<": Lo minimo que puede apostar es "<<minimo<<endl;
            return ERROR;
            }
        _fichas -= apuesta;
        apuestaDeEsteJugador = total;
        cout<<_nombre<<": Apuesto "<<apuesta<<endl;
        if(apuestaActual < apuestaDeEsteJugador){
            apuestaActual = apuestaDeEsteJugador;
            }
        return APOSTAR;
        }
    }

int Jugador::getFichas(){
    return _fichas;
    }

void Jugador::setFichas(int newFichas){
    _fichas = newFichas;
    }

Mano Jugador::getMano(){
    return _mano;
    }

void Jugador::setMano(Mano newMano){
    _mano = newMano;
    }

string Jugador::getNombre(){
    return _nombre;
    }

void Jugador::setNombre(string newNombre){
    _nombre = newNombre;
    }

void Jugador::darFichas(int fichas){
    _fichas += fichas;
    }
        
void Jugador::quitarFichas(int fichas){
    _fichas -= fichas;
    }
